package com.cskaoyan.javase.oop3._2inner._1member._2extend;

/**
 * 如何让一个外部类继承成员内部类？
 *
 * @since 09:31
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
}

class EnclosedClazz {
    class InnerClazz {

    }

    static class NestedClazz {
    }
}

// No enclosing instance of type 'com.cskaoyan.javase.oop3._2inner._1member._2extend.EnclosedClazz' is in scope
/*
    成员内部类对象需要依赖于外围类对象
    继承某个类，子类对象的隐式初始化，需要依赖于父类的无参构造器
    如果父类是一个成员内部类
    那么它的无参构造器想要被调用，需要在外围类对象的基础上才能调用
 */
class InnerSon extends EnclosedClazz.InnerClazz {
    public InnerSon(EnclosedClazz ec) {
        // this指向当前InnerSon对象，super指向父类内部类InnerClazz
        ec.super();
        // EnclosedClazz ec = new EnclosedClazz();
        // super();
    }
}

class A extends EnclosedClazz.NestedClazz {
}